{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "initial_id",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:19.934868Z",
     "start_time": "2025-01-24T11:21:19.928799Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:24:42.029074Z",
     "iopub.status.busy": "2025-01-24T12:24:42.028659Z",
     "iopub.status.idle": "2025-01-24T12:24:44.133615Z",
     "shell.execute_reply": "2025-01-24T12:24:44.133113Z",
     "shell.execute_reply.started": "2025-01-24T12:24:42.029052Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
      "  from .autonotebook import tqdm as notebook_tqdm\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sys.version_info(major=3, minor=10, micro=14, releaselevel='final', serial=0)\n",
      "matplotlib 3.10.0\n",
      "numpy 1.26.4\n",
      "pandas 2.2.3\n",
      "sklearn 1.6.0\n",
      "torch 2.5.1+cu124\n",
      "cuda:0\n"
     ]
    }
   ],
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import pandas as pd\n",
    "import os\n",
    "import sys\n",
    "import time\n",
    "from tqdm.auto import tqdm\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "print(sys.version_info)\n",
    "for module in mpl, np, pd, sklearn, torch:\n",
    "    print(module.__name__, module.__version__)\n",
    "\n",
    "device = torch.device(\"cuda:0\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
    "print(device)\n",
    "\n",
    "seed = 42"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7ffdba32-4871-444c-b719-83b3d40cee10",
   "metadata": {
    "ExecutionIndicator": {
     "show": true
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:24:44.134981Z",
     "iopub.status.busy": "2025-01-24T12:24:44.134572Z",
     "iopub.status.idle": "2025-01-24T12:24:44.137331Z",
     "shell.execute_reply": "2025-01-24T12:24:44.136851Z",
     "shell.execute_reply.started": "2025-01-24T12:24:44.134957Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    " # !pip install subword-nmt "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3964825bfe63f80",
   "metadata": {},
   "source": [
    "## 准备数据\n",
    "\n",
    "这里使用subword分词，我们使用已经清洗好的数据集，可以从此处下载，分词使用[此处](https://www.kaggleusercontent.com/kf/98352223/eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..nKt8lrIW5ej5QJQVpOWuqQ.oLIgiLMONU5Gpj_maVudRJa55NSOCILxk4JNZhvuXmeDBR-oG0uQm7bDHBfSwZRGvOBHQTsRV308iNP80btfwMinQ7yvJNt-GwdQF4XR4DIsg-2CbEPYiMsi_NdbL0FmE9LYStKdxCWbrCZCCMrTmo5LxR1txwibXaSpeP5Inobhbez5zetZIRH210CBuX2JbpRc_DULQpazKbtFPitwyfktVmdG_syvVAU6Sk9b0r0_erYAgb_jkKXX1Mxo1KzWSKLcAvbmMIPcsUkx9PmeJDs_wopfsQsZ1h5jaQX4_l0CTZrEenP6lIPDxpTwXANqqdHspmZeeEIAThqCHC6sb5DxTvG89BwzY9rc53Aa0uX4V806wJVybnRXoaV65K4GqpjnxbBK0WC8G-2lNtrqFujE89KDXZjFPgyfOEj1QIu13oFNSjgs6o4VV1PdZOrhiNdSmjb44c22l_unOaFojzJgzcPxq9AG2lcmrOpdZ2qu1jjdwey-58TA2ZHNCo3XnjEe2n3ignpnbsdLFpo22O8QakSUHv91wuYDYdNi3AiSmltL_k2ChuKfJ0G8kATpLe4k8wA26sO4GMXg4HImOr3b4aDVEIWXdApHP0ecFKs6ELTo8O7X-TK8Jvbua7e6qpDfDc-r_cD73fVSgSek5yNmKQMBzuVcjkprXmcxICQ.kV1b4N1s64NERKnt4zwQgQ/imdb_processed.csv)下载，分词使用 [subword-nmt](https://github.com/rsennrich/subword-nmt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2100ccbd0ff16f95",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:20.405284Z",
     "start_time": "2025-01-24T11:21:20.064900Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:24:44.138079Z",
     "iopub.status.busy": "2025-01-24T12:24:44.137901Z",
     "iopub.status.idle": "2025-01-24T12:24:44.402372Z",
     "shell.execute_reply": "2025-01-24T12:24:44.401870Z",
     "shell.execute_reply.started": "2025-01-24T12:24:44.138060Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(50000, 2)\n"
     ]
    }
   ],
   "source": [
    "cleaned_df = pd.read_csv('imdb_processed.csv')\n",
    "print(cleaned_df.shape)  # (50000, 2), 50000条评论, 2列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d8b8654c582a7f7a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:20.584578Z",
     "start_time": "2025-01-24T11:21:20.407287Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:24:44.403468Z",
     "iopub.status.busy": "2025-01-24T12:24:44.403018Z",
     "iopub.status.idle": "2025-01-24T12:24:44.481849Z",
     "shell.execute_reply": "2025-01-24T12:24:44.481332Z",
     "shell.execute_reply.started": "2025-01-24T12:24:44.403448Z"
    }
   },
   "outputs": [],
   "source": [
    "# 随机打乱数据，取训练集和测试集\n",
    "np.random.seed(seed)  # 设置随机种子\n",
    "# frac=1表示全部打乱（frac是比例，reset_index(drop=True)是重新索引\n",
    "cleaned_df = cleaned_df.sample(frac=1).reset_index(drop=True)  # 打乱数据\n",
    "\n",
    "# 保存训练集\n",
    "with open('imdb_train.txt', 'w', encoding='utf-8') as fd:\n",
    "    # 只保存了processed列，即评论文本，没有保存label列\n",
    "    for line in cleaned_df.processed.values[:25000]:\n",
    "        fd.write(line.lower() + '\\n')  # 变为小写，token数量少一些\n",
    "\n",
    "# 保存测试集\n",
    "with open('imdb_test.txt', 'w', encoding='utf-8') as fd:\n",
    "    # 只保存了processed列，即评论文本，没有保存label列\n",
    "    for line in cleaned_df.processed.values[25000:]:\n",
    "        fd.write(line.lower() + '\\n')  # 变为小写，token数量少一些"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "3935bcf496c5da8c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:40.159763Z",
     "start_time": "2025-01-24T11:21:20.585582Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:24:44.483658Z",
     "iopub.status.busy": "2025-01-24T12:24:44.483247Z",
     "iopub.status.idle": "2025-01-24T12:25:06.327362Z",
     "shell.execute_reply": "2025-01-24T12:25:06.326780Z",
     "shell.execute_reply.started": "2025-01-24T12:24:44.483637Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100%|######################################| 8000/8000 [00:10<00:00, 789.36it/s]\n"
     ]
    }
   ],
   "source": [
    "# 学习bpe分词(很慢,学一次就好)\n",
    "# -i 选择学习的文件\n",
    "# -o 核心输出文件,分词需要用到imdb_bpe_code\n",
    "# --write-vocabulary 字典输出文件\n",
    "# -s 词表大小\n",
    "!subword-nmt learn-joint-bpe-and-vocab -i ./imdb_train.txt -o ./imdb_bpe_code --write-vocabulary ./imdb_bpe_vocab -s 8000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "4b399a5854d534bf",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:50.362077Z",
     "start_time": "2025-01-24T11:21:40.160780Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:06.328276Z",
     "iopub.status.busy": "2025-01-24T12:25:06.328074Z",
     "iopub.status.idle": "2025-01-24T12:25:22.477684Z",
     "shell.execute_reply": "2025-01-24T12:25:22.477028Z",
     "shell.execute_reply.started": "2025-01-24T12:25:06.328255Z"
    }
   },
   "outputs": [],
   "source": [
    "# 应用bpe分词,-c 指定 BPE 编码的配置文件\n",
    "!subword-nmt apply-bpe -c ./imdb_bpe_code -i ./imdb_train.txt -o ./imdb_train_bpe.txt\n",
    "!subword-nmt apply-bpe -c ./imdb_bpe_code -i ./imdb_test.txt -o ./imdb_test_bpe.txt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "64709e993dca5996",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:50.407192Z",
     "start_time": "2025-01-24T11:21:50.364080Z"
    },
    "ExecutionIndicator": {
     "show": true
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:22.478621Z",
     "iopub.status.busy": "2025-01-24T12:25:22.478416Z",
     "iopub.status.idle": "2025-01-24T12:25:22.481315Z",
     "shell.execute_reply": "2025-01-24T12:25:22.480842Z",
     "shell.execute_reply.started": "2025-01-24T12:25:22.478599Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 分词后的数据长什么样,与分词前imdb_train.txt进行对比来理解，@@ 是分词的标记，如果一个单词被分开，就会加上@@\n",
    "# !head ./imdb_train_bpe.txt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "5df97de9ff98e4ed",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:50.415411Z",
     "start_time": "2025-01-24T11:21:50.408196Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:22.482087Z",
     "iopub.status.busy": "2025-01-24T12:25:22.481917Z",
     "iopub.status.idle": "2025-01-24T12:25:22.490466Z",
     "shell.execute_reply": "2025-01-24T12:25:22.490036Z",
     "shell.execute_reply.started": "2025-01-24T12:25:22.482069Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>processed</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>I really liked Summerslam due look arena , cur...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Not many television show appeal quite many dif...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>The film quickly get major chase scene ever in...</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Jane Austen would definitely approve one ! Gwy...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Expectations somewhat high I went see movie , ...</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                           processed  label\n",
       "0  I really liked Summerslam due look arena , cur...      1\n",
       "1  Not many television show appeal quite many dif...      1\n",
       "2  The film quickly get major chase scene ever in...      0\n",
       "3  Jane Austen would definitely approve one ! Gwy...      1\n",
       "4  Expectations somewhat high I went see movie , ...      0"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cleaned_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "a2da2430b771c2ec",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:52.046184Z",
     "start_time": "2025-01-24T11:21:50.416414Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:22.491111Z",
     "iopub.status.busy": "2025-01-24T12:25:22.490947Z",
     "iopub.status.idle": "2025-01-24T12:25:23.840456Z",
     "shell.execute_reply": "2025-01-24T12:25:23.839908Z",
     "shell.execute_reply.started": "2025-01-24T12:25:22.491094Z"
    }
   },
   "outputs": [],
   "source": [
    "subwords = []\n",
    "\n",
    "with open('./imdb_train_bpe.txt', 'r', encoding='utf-8') as fd:\n",
    "    # fd.readlines()读取文件的所有行，并返回一个列表，每个元素是一行内容。\n",
    "    for line in fd.readlines():\n",
    "        # line.strip() 去除行首尾的空白字符（如换行符、空格等）。\n",
    "        subwords.append(line.strip())\n",
    "\n",
    "with open('./imdb_test_bpe.txt', 'r', encoding='utf-8') as fd:\n",
    "    for line in fd.readlines():\n",
    "        subwords.append(line.strip())\n",
    "\n",
    "cleaned_df['subwords10k'] = subwords  # 保存分词后的结果\n",
    "cleaned_df[\"split\"] = [\"train\"] * 25000 + [\"test\"] * 25000  # 标记训练集和测试集\n",
    "#把分词后的结果保存到csv文件\n",
    "cleaned_df.to_csv(\"imdb_subwords.csv\", index=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "8d46c30148e0ecb7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:52.050657Z",
     "start_time": "2025-01-24T11:21:52.047186Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:23.841551Z",
     "iopub.status.busy": "2025-01-24T12:25:23.841126Z",
     "iopub.status.idle": "2025-01-24T12:25:23.843951Z",
     "shell.execute_reply": "2025-01-24T12:25:23.843513Z",
     "shell.execute_reply.started": "2025-01-24T12:25:23.841528Z"
    }
   },
   "outputs": [],
   "source": [
    "# print(len(train_ds))\n",
    "# print(type(train_ds))\n",
    "# print(type(train_ds[0]))\n",
    "# print(test_ds[0][1])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "51828c464e7a2c84",
   "metadata": {},
   "source": [
    "## 构造 word2idx 和 idx2word"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4a2e52a9c62ef5e5",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:52.056606Z",
     "start_time": "2025-01-24T11:21:52.051661Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:23.844666Z",
     "iopub.status.busy": "2025-01-24T12:25:23.844502Z",
     "iopub.status.idle": "2025-01-24T12:25:24.011979Z",
     "shell.execute_reply": "2025-01-24T12:25:24.011540Z",
     "shell.execute_reply.started": "2025-01-24T12:25:23.844649Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0: '[PAD]', 1: '[BOS]', 2: '[UNK]', 3: '[EOS]'}\n"
     ]
    }
   ],
   "source": [
    "#载入词表，看下词表长度，词表就像英语字典\n",
    "word2idx = {\n",
    "    \"[PAD]\": 0,  # 填充 token\n",
    "    \"[BOS]\": 1,  # begin of sentence\n",
    "    \"[UNK]\": 2,  # 未知 token\n",
    "    \"[EOS]\": 3,  # end of sentence\n",
    "}\n",
    "\n",
    "idx2word = {value: key for key, value in word2idx.items()}\n",
    "print(idx2word)\n",
    "index = len(idx2word)  # 词表长度，现在为4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "aae34686e8dde174",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:52.080004Z",
     "start_time": "2025-01-24T11:21:52.059611Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:24.012711Z",
     "iopub.status.busy": "2025-01-24T12:25:24.012545Z",
     "iopub.status.idle": "2025-01-24T12:25:24.026474Z",
     "shell.execute_reply": "2025-01-24T12:25:24.026040Z",
     "shell.execute_reply.started": "2025-01-24T12:25:24.012693Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 8031/8031 [00:00<00:00, 1050472.63it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "vocab_size: 8035\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "threshold = 1  # 出现次数低于此的token舍弃\n",
    "\n",
    "with open('./imdb_bpe_vocab', 'r', encoding='utf-8') as fd:\n",
    "    for line in tqdm(fd.readlines()):\n",
    "        token, count = line.strip().split()\n",
    "        if int(count) >= threshold:\n",
    "            word2idx[token] = index  # 加入词表\n",
    "            idx2word[index] = token  # 加入反向词典\n",
    "            index += 1\n",
    "\n",
    "vocab_size = len(word2idx)\n",
    "print(f\"vocab_size: {vocab_size}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d75577c179c828f3",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:52.084929Z",
     "start_time": "2025-01-24T11:21:52.081011Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:24.027378Z",
     "iopub.status.busy": "2025-01-24T12:25:24.026989Z",
     "iopub.status.idle": "2025-01-24T12:25:24.029506Z",
     "shell.execute_reply": "2025-01-24T12:25:24.029094Z",
     "shell.execute_reply.started": "2025-01-24T12:25:24.027357Z"
    }
   },
   "outputs": [],
   "source": [
    "# # 选择 max_length\n",
    "# length_collect = {}\n",
    "# for text, label in train_ds:\n",
    "#     length = len(text)\n",
    "#     length_collect[length] = length_collect.get(length, 0) + 1\n",
    "# \n",
    "# MAX_LENGTH = 500\n",
    "# plt.bar(length_collect.keys(), length_collect.values())\n",
    "# plt.axvline(MAX_LENGTH, label=\"max length\", c=\"gray\", ls=\":\")\n",
    "# plt.legend()\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ce947a06de87a0f",
   "metadata": {},
   "source": [
    "## Tokenizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "a55e360bd8b89339",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:21:52.093066Z",
     "start_time": "2025-01-24T11:21:52.085931Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:24.032127Z",
     "iopub.status.busy": "2025-01-24T12:25:24.031760Z",
     "iopub.status.idle": "2025-01-24T12:25:24.039574Z",
     "shell.execute_reply": "2025-01-24T12:25:24.039141Z",
     "shell.execute_reply.started": "2025-01-24T12:25:24.032108Z"
    }
   },
   "outputs": [],
   "source": [
    "class Tokenizer:\n",
    "    def __init__(self, word2idx, idx2word, max_length=500,\n",
    "                 pad_idx=0, bos_idx=1, eos_idx=3, unk_idx=2):\n",
    "        self.word2idx = word2idx  # 词典，单词->id\n",
    "        self.idx2word = idx2word  # 反向词典，id->单词\n",
    "        self.max_length = max_length\n",
    "        self.pad_idx = pad_idx  #填充\n",
    "        self.bos_idx = bos_idx  #开始\n",
    "        self.eos_idx = eos_idx  #结束\n",
    "        self.unk_idx = unk_idx  #未知，未出现在最高频词表中的词\n",
    "\n",
    "    def encode(self, test_list, padding_first=False):\n",
    "        \"\"\"\n",
    "        将文本列表转化为索引列表\n",
    "        :param test_list: 当前批次的文本列表\n",
    "        \"\"\"\n",
    "        # 最大长度，最大长度是500，\n",
    "        # 但是如果句子长度小于500，就取句子长度（句子长度是本组句子中最长的），\n",
    "        # 2是为了留出开始和结束的位置\n",
    "        max_length = min(self.max_length, 2 + max([len(text) for text in test_list]))\n",
    "        indices_list = []\n",
    "        for text in test_list:\n",
    "            # 直接切片取前max_length-2个单词，然后加上bos和eos\n",
    "            indices = [self.bos_idx] + [self.word2idx.get(word, self.unk_idx) for word in text[:max_length - 2]] + [\n",
    "                self.eos_idx]\n",
    "            if padding_first:  # 填充在最前面\n",
    "                indices = [self.pad_idx] * (max_length - len(indices)) + indices\n",
    "            else:  # 填充在最后面\n",
    "                indices = indices + [self.pad_idx] * (max_length - len(indices))\n",
    "            indices_list.append(indices)\n",
    "        return torch.tensor(indices_list)  # 二维列表转化为tensor\n",
    "\n",
    "    def decode(self, indices_list, remove_bos=True,\n",
    "               remove_eos=True, remove_pad=True, split=False):\n",
    "        \"\"\"\n",
    "        将索引列表转化为文本列表\n",
    "        \"\"\"\n",
    "        text_list = []\n",
    "        for indices in indices_list:\n",
    "            text = []\n",
    "            for index in indices:\n",
    "                word = self.idx2word.get(index, \"[UNK]\")\n",
    "                if remove_bos and word == \"[BOS]\": continue\n",
    "                if remove_eos and word == \"[EOS]\": break\n",
    "                if remove_pad and word == \"[PAD]\": break\n",
    "                text.append(word)\n",
    "            text_list.append(\" \".join(text) if not split else text)\n",
    "        return text_list\n",
    "\n",
    "\n",
    "tokenizer = Tokenizer(word2idx=word2idx, idx2word=idx2word,\n",
    "                      max_length=500)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "c9ffeddb0b8db8f3",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:00.358711Z",
     "start_time": "2025-01-24T11:57:00.354960Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:24.040346Z",
     "iopub.status.busy": "2025-01-24T12:25:24.040098Z",
     "iopub.status.idle": "2025-01-24T12:25:24.042804Z",
     "shell.execute_reply": "2025-01-24T12:25:24.042347Z",
     "shell.execute_reply.started": "2025-01-24T12:25:24.040328Z"
    }
   },
   "outputs": [],
   "source": [
    "# raw_text = [\"hello world\".split(), \"i really liked sum@@ mer@@ sla@@ m due look a@@ ren@@ a , cur@@ \".split(),\n",
    "#             \"this is a test\".split()]\n",
    "# indices = tokenizer.encode(raw_text, padding_first=False)\n",
    "# \n",
    "# print(\"raw text-------------------\")\n",
    "# for raw in raw_text:\n",
    "#     print(raw)\n",
    "# print(\"indices---------------\")\n",
    "# for index in indices:\n",
    "#     print(index)\n",
    "# idx2word[8]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bacb9856c46ef7e3",
   "metadata": {},
   "source": [
    "## 数据集与DataLoader"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "2469ca0cb5becfc6",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:02.151476Z",
     "start_time": "2025-01-24T11:57:00.472741Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:24.043768Z",
     "iopub.status.busy": "2025-01-24T12:25:24.043425Z",
     "iopub.status.idle": "2025-01-24T12:25:25.170083Z",
     "shell.execute_reply": "2025-01-24T12:25:25.169525Z",
     "shell.execute_reply.started": "2025-01-24T12:25:24.043749Z"
    }
   },
   "outputs": [],
   "source": [
    "from torch.utils.data import Dataset, DataLoader\n",
    "\n",
    "\n",
    "# 随后加载数据集就从bpe分词的文件里加载\n",
    "class ImdbDataset(Dataset):\n",
    "    def __init__(self, mode='train'):\n",
    "        # 加载训练集或测试集，query语句筛选出split列等于mode的行\n",
    "        df = pd.read_csv('imdb_subwords.csv').query(\"split=='{}'\".format(mode))\n",
    "        self.texts = df[\"subwords10k\"].values  # 评论文本\n",
    "        self.labels = df[\"label\"].values  # 评论标签\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.labels)\n",
    "\n",
    "    def __getitem__(self, idx):\n",
    "        # 返回一条评论的文本和标签\n",
    "        #  self.texts[idx].split() 的作用是从 self.texts 列表中获取索引为 idx 的文本，并将其按空格分割成单词列表\n",
    "        return self.texts[idx].split(), self.labels[idx]\n",
    "\n",
    "\n",
    "def collate_fct(batch):\n",
    "    \"\"\"\n",
    "    将batch数据处理成tensor形式\n",
    "    \"\"\"\n",
    "    # batch是128样本，每个样本类型是元组，第一个元素是文本，第二个元素是标签\n",
    "    text_list = [item[0] for item in batch]\n",
    "    label_list = [item[1] for item in batch]\n",
    "    # 文本转化为索引\n",
    "    text_list = tokenizer.encode(text_list, padding_first=True).to(dtype=torch.int)\n",
    "    # torch.tensor(label_list):将 Python 列表 label_list 转换为 PyTorch 张量。\n",
    "    # .reshape(-1, 1):将张量的形状重塑为 (n, 1)，其中 n 是 label_list 的长度。\n",
    "    # .to(dtype=torch.float):将张量的数据类型转换为 float。\n",
    "    return text_list, torch.tensor(label_list).reshape(-1, 1).to(dtype=torch.float)\n",
    "\n",
    "\n",
    "train_ds = ImdbDataset(mode='train')\n",
    "test_ds = ImdbDataset(mode='test')\n",
    "\n",
    "batch_size = 128\n",
    "# collate_fn是处理batch的函数\n",
    "train_loader = DataLoader(train_ds, batch_size=batch_size,\n",
    "                          shuffle=True, collate_fn=collate_fct)\n",
    "test_loader = DataLoader(test_ds, batch_size=batch_size,\n",
    "                         shuffle=False, collate_fn=collate_fct)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "55bacfa5add7bc90",
   "metadata": {},
   "source": [
    "## 定义模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "9bce9805113da283",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:02.158608Z",
     "start_time": "2025-01-24T11:57:02.153479Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:25.171360Z",
     "iopub.status.busy": "2025-01-24T12:25:25.170816Z",
     "iopub.status.idle": "2025-01-24T12:25:25.177335Z",
     "shell.execute_reply": "2025-01-24T12:25:25.176780Z",
     "shell.execute_reply.started": "2025-01-24T12:25:25.171307Z"
    }
   },
   "outputs": [],
   "source": [
    "class LSTM(nn.Module):\n",
    "    # LSTM模型的参数量是RNN模型的4倍\n",
    "    def __init__(self, embedding_dim=16, hidden_dim=64, vocab_size=vocab_size,\n",
    "                 num_layers=1, bidirectional=False):\n",
    "        super(LSTM, self).__init__()\n",
    "        # 词嵌入层\n",
    "        self.embedding = nn.Embedding(vocab_size, embedding_dim)\n",
    "        # LSTM层\n",
    "        # 输入维度是embedding_dim，隐藏层维度是hidden_dim，有num_layers层，\n",
    "        # batch_first: 输入输出的格式，默认是(seq,batch,feature)，设置为True后为(batch,seq,feature)\n",
    "        # bidirectional=True表示使用双向LSTM\n",
    "        self.lstm = nn.LSTM(embedding_dim, hidden_dim, num_layers=num_layers,\n",
    "                            batch_first=True, bidirectional=bidirectional)\n",
    "        self.layer = nn.Linear(hidden_dim * (2 if bidirectional else 1), hidden_dim)\n",
    "        self.fc = nn.Linear(hidden_dim, 1)\n",
    "\n",
    "    def forward(self, x):\n",
    "        # [bacth_size,seq_len,vocab_size]->[batch_size,seq_len,embedding_dim]\n",
    "        # [batch_size, 500,10000]->[batch_size, 500,16]\n",
    "        x = self.embedding(x)\n",
    "        # [batch_size,seq_len,embedding_dim]->[batch_size,seq_len,hidden_dim]\n",
    "        #                                   或[batch_size,seq_len,2*hidden_dim]\n",
    "        seq_output, (hidden, cell) = self.lstm(x)\n",
    "\n",
    "        # print(seq_output.shape) # torch.Size([128, 500,64])\n",
    "        # print(hidden.shape) # torch.Size([1, 128, 64])\n",
    "        # print(cell.shape) # torch.Size([1, 128, 64])\n",
    "        # print(\"-\"*50)\n",
    "        # print(seq_output[:,-1,:].squeeze()==hidden.squeeze())  # 全为True\n",
    "        # print(\"-\"*50)\n",
    "        # print(seq_output[:,-1,:].squeeze()==cell.squeeze()) # 全为false\n",
    "\n",
    "        # 取最后一个时间步的输出 (这也是为什么要设置padding_first=True的原因)\n",
    "        x = seq_output[:, -1, :]\n",
    "        # [batch_size,hidden_dim]或[batch_size,hidden_dim*2]->[batch_size,hidden_dim]\n",
    "        x = self.layer(x)\n",
    "        # [batch_size,hidden_dim]->[batch_size,1]\n",
    "        x = self.fc(x)\n",
    "        return x"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e9717cd2ccd322fb",
   "metadata": {},
   "source": [
    "## 训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "6aa56cf1fad4b9d7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:02.165345Z",
     "start_time": "2025-01-24T11:57:02.159611Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:25.178520Z",
     "iopub.status.busy": "2025-01-24T12:25:25.178063Z",
     "iopub.status.idle": "2025-01-24T12:25:25.208145Z",
     "shell.execute_reply": "2025-01-24T12:25:25.207690Z",
     "shell.execute_reply.started": "2025-01-24T12:25:25.178489Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "\n",
    "@torch.no_grad()  # 装饰器，禁止梯度计算\n",
    "def evaluate(model, data_loader, loss_fct):\n",
    "    loss_list = []\n",
    "    pred_list = []\n",
    "    label_list = []\n",
    "    for datas, labels in data_loader:\n",
    "        datas = datas.to(device)\n",
    "        labels = labels.to(device)\n",
    "\n",
    "        # 前向传播\n",
    "        logits = model(datas)\n",
    "        loss = loss_fct(logits, labels)  # 验证集损失\n",
    "        # tensor.item() 获取tensor的数值，loss是只有一个元素的tensor\n",
    "        loss_list.append(loss.item())\n",
    "\n",
    "        # 二分类\n",
    "        preds = logits > 0  # 预测值大于0的为1，否则为0\n",
    "        pred_list.extend(preds.cpu().numpy().tolist())\n",
    "        label_list.extend(labels.cpu().numpy().tolist())\n",
    "\n",
    "    acc = accuracy_score(label_list, pred_list)  # 计算准确率\n",
    "    return np.mean(loss_list), acc  # # 返回验证集平均损失和准确率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "b2c104fb75bfca6d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:02.172316Z",
     "start_time": "2025-01-24T11:57:02.167353Z"
    },
    "ExecutionIndicator": {
     "show": true
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:25.209309Z",
     "iopub.status.busy": "2025-01-24T12:25:25.208777Z",
     "iopub.status.idle": "2025-01-24T12:25:25.214730Z",
     "shell.execute_reply": "2025-01-24T12:25:25.214254Z",
     "shell.execute_reply.started": "2025-01-24T12:25:25.209278Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "class SaveCheckpointsCallback:\n",
    "    def __init__(self, save_dir, save_step=500, save_best_only=True):\n",
    "        self.save_dir = save_dir  # 保存路径\n",
    "        self.save_step = save_step  # 保存步数\n",
    "        self.save_best_only = save_best_only  # 是否只保存最好的模型\n",
    "        self.best_metric = -1  # 最好的指标，指标不可能为负数，所以初始化为-1\n",
    "        # 创建保存路径\n",
    "        if not os.path.exists(self.save_dir):  # 如果不存在保存路径，则创建\n",
    "            os.makedirs(self.save_dir)\n",
    "\n",
    "    # 对象被调用时：当你将对象像函数一样调用时，Python 会自动调用 __call__ 方法。\n",
    "    # state_dict() 返回模型参数的字典，包括模型参数和优化器参数\n",
    "    # metric 是指标，可以是验证集的准确率，也可以是其他指标\n",
    "    def __call__(self, step, state_dict, metric=None):\n",
    "        if step % self.save_step > 0:\n",
    "            return  # 不是保存步数，则直接返回\n",
    "\n",
    "        if self.save_best_only:\n",
    "            assert metric is not None  # 必须传入metric\n",
    "            if metric >= self.best_metric:  # 如果当前指标大于最好的指标\n",
    "                # save checkpoint\n",
    "                # 保存最好的模型，覆盖之前的模型，不保存step，只保存state_dict，即模型参数，不保存优化器参数\n",
    "                torch.save(state_dict, os.path.join(self.save_dir, \"06_embedding_LSTM_subword.ckpt\"))\n",
    "                self.best_metric = metric  # 更新最好的指标\n",
    "        else:\n",
    "            # 保存模型\n",
    "            torch.save(state_dict, os.path.join(self.save_dir, f\"{step}.ckpt\"))\n",
    "            # 保存每个step的模型，不覆盖之前的模型，保存step，保存state_dict，即模型参数，不保存优化器参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "7e2036ec4cd7eb34",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:02.179364Z",
     "start_time": "2025-01-24T11:57:02.174320Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:25.215435Z",
     "iopub.status.busy": "2025-01-24T12:25:25.215265Z",
     "iopub.status.idle": "2025-01-24T12:25:25.219500Z",
     "shell.execute_reply": "2025-01-24T12:25:25.219025Z",
     "shell.execute_reply.started": "2025-01-24T12:25:25.215416Z"
    }
   },
   "outputs": [],
   "source": [
    "class EarlyStopCallback:\n",
    "    def __init__(self, patience=5, min_delta=0.01):\n",
    "        self.patience = patience  # 多少个step没有提升就停止训练\n",
    "        self.min_delta = min_delta  # 最小的提升幅度\n",
    "        self.best_metric = -1  # 记录的最好的指标\n",
    "        self.counter = 0  # 计数器，记录连续多少个step没有提升\n",
    "\n",
    "    def __call__(self, metric):\n",
    "        if metric >= self.best_metric + self.min_delta:  # 如果指标提升了\n",
    "            self.best_metric = metric  # 更新最好的指标\n",
    "            self.counter = 0  # 计数器清零\n",
    "        else:\n",
    "            self.counter += 1  # 计数器加一\n",
    "\n",
    "    @property  # 使用@property装饰器，使得 对象.early_stop可以调用，不需要()\n",
    "    def early_stop(self):\n",
    "        # 如果计数器大于等于patience，则返回True，停止训练\n",
    "        return self.counter >= self.patience"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "cfc62df64720c502",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:02.187165Z",
     "start_time": "2025-01-24T11:57:02.180368Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:25.220291Z",
     "iopub.status.busy": "2025-01-24T12:25:25.220124Z",
     "iopub.status.idle": "2025-01-24T12:25:25.228076Z",
     "shell.execute_reply": "2025-01-24T12:25:25.227615Z",
     "shell.execute_reply.started": "2025-01-24T12:25:25.220274Z"
    }
   },
   "outputs": [],
   "source": [
    "def training(model,\n",
    "             train_loader,\n",
    "             val_loader,\n",
    "             epoch,\n",
    "             loss_fct,\n",
    "             optimizer,\n",
    "             save_ckpt_callback=None,\n",
    "             early_stop_callback=None,\n",
    "             eval_step=500,\n",
    "             ):\n",
    "    record_dict = {\n",
    "        \"train\": [],\n",
    "        \"val\": []\n",
    "    }\n",
    "\n",
    "    global_step = 0  # 全局步数\n",
    "    model.train()  # 训练模式\n",
    "    with tqdm(total=epoch * len(train_loader)) as pbar:\n",
    "        for epoch_id in range(epoch):\n",
    "            for datas, labels in train_loader:\n",
    "                datas = datas.to(device)\n",
    "                labels = labels.to(device)\n",
    "\n",
    "                # 前向传播\n",
    "                logits = model(datas)\n",
    "                loss = loss_fct(logits, labels)  # 训练集损失\n",
    "                #当sigmoid输出大于0.5时，预测为1，否则预测为0，这里大于0，刚好sigmoid的值是0.5，预测为1\n",
    "                preds = logits > 0\n",
    "\n",
    "                # 反向传播\n",
    "                optimizer.zero_grad()  # 梯度清零\n",
    "                loss.backward()  # 反向传播\n",
    "                optimizer.step()  # 优化器更新参数\n",
    "\n",
    "                # 计算准确率\n",
    "                acc = accuracy_score(labels.cpu().numpy(), preds.cpu().numpy())\n",
    "                loss = loss.cpu().item()\n",
    "\n",
    "                record_dict[\"train\"].append({\n",
    "                    \"loss\": loss,\n",
    "                    \"acc\": acc,\n",
    "                    \"step\": global_step\n",
    "                })\n",
    "\n",
    "                # 评估\n",
    "                if global_step % eval_step == 0:\n",
    "                    model.eval()  # 评估模式\n",
    "                    # 验证集损失和准确率\n",
    "                    val_loss, val_acc = evaluate(model, val_loader, loss_fct)\n",
    "                    record_dict[\"val\"].append({\n",
    "                        \"loss\": val_loss,\n",
    "                        \"acc\": val_acc,\n",
    "                        \"step\": global_step\n",
    "                    })\n",
    "                    model.train()  # 训练模式\n",
    "\n",
    "                    # 2. 保存模型权重 save model checkpoint\n",
    "                    if save_ckpt_callback is not None:\n",
    "                        # model.state_dict() 返回模型参数的字典，包括模型参数和优化器参数\n",
    "                        save_ckpt_callback(global_step, model.state_dict(), val_acc)\n",
    "                        # 保存最好的模型，覆盖之前的模型，保存step，保存state_dict,通过metric判断是否保存最好的模型\n",
    "\n",
    "                    # 3. 早停 early stopping\n",
    "                    if early_stop_callback is not None:\n",
    "                        # 验证集准确率不再提升，则停止训练\n",
    "                        early_stop_callback(val_acc)\n",
    "                        # 验证集准确率不再提升，则停止训练\n",
    "                        if early_stop_callback.early_stop:\n",
    "                            print(f\"Early stop at epoch {epoch_id} / global_step {global_step}\")\n",
    "                            return record_dict  # 早停，返回记录字典 record_dict\n",
    "\n",
    "                # 更新进度条和全局步数\n",
    "                pbar.update(1)  # 更新进度条\n",
    "                global_step += 1  # 全局步数加一\n",
    "                pbar.set_postfix({\"epoch\": epoch_id})\n",
    "\n",
    "    return record_dict  # 训练结束，返回记录字典 record_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "4751d348981cc23d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:02.193754Z",
     "start_time": "2025-01-24T11:57:02.188169Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:25.228801Z",
     "iopub.status.busy": "2025-01-24T12:25:25.228618Z",
     "iopub.status.idle": "2025-01-24T12:25:25.233942Z",
     "shell.execute_reply": "2025-01-24T12:25:25.233491Z",
     "shell.execute_reply.started": "2025-01-24T12:25:25.228782Z"
    }
   },
   "outputs": [],
   "source": [
    "def plot_record_curves(record_dict, sample_step=500):\n",
    "    # .set_index(\"step\") 将 step 列设置为 DataFrame 的索引\n",
    "    train_df = pd.DataFrame(record_dict[\"train\"]).set_index(\"step\").iloc[::sample_step]\n",
    "    val_df = pd.DataFrame(record_dict[\"val\"]).set_index(\"step\")\n",
    "\n",
    "    last_step = train_df.index[-1]  # 最后一步的步数\n",
    "\n",
    "    # print(train_df)\n",
    "    # print(val_df)\n",
    "\n",
    "    # 画图 \n",
    "    fig_num = len(train_df.columns)  # 画两张图,分别是损失和准确率\n",
    "\n",
    "    # plt.subplots：用于创建一个包含多个子图的图形窗口。\n",
    "    # 1：表示子图的行数为 1。\n",
    "    # fig_num：表示子图的列数，即子图的数量。\n",
    "    # figsize=(5 * fig_num, 5)：设置整个图形窗口的大小，宽度为 5 * fig_num，高度为 5。\n",
    "    # fig：返回的图形对象（Figure），用于操作整个图形窗口。\n",
    "    # axs：返回的子图对象（Axes 或 Axes 数组），用于操作每个子图。\n",
    "    fig, axs = plt.subplots(1, fig_num, figsize=(5 * fig_num, 5))\n",
    "    for idx, item in enumerate(train_df.columns):\n",
    "        # train_df.index 是 x 轴数据（通常是 step）。\n",
    "        # train_df[item] 是 y 轴数据（当前指标的值）。\n",
    "        axs[idx].plot(train_df.index, train_df[item], label=\"train:\" + item)\n",
    "        # val_df.index 是 x 轴数据。\n",
    "        # val_df[item] 是 y 轴数据。\n",
    "        axs[idx].plot(val_df.index, val_df[item], label=\"val:\" + item)\n",
    "        axs[idx].grid()  # 显示网格\n",
    "        axs[idx].legend()  # 显示图例\n",
    "        # axs[idx].set_xticks(range(0, train_df.index[-1] + 1, 5000))  # 设置x轴刻度\n",
    "        # axs[idx].set_xticklabels(map(lambda x: f\"{x // 1000}k\", range(0, last_step + 1, 5000)))  # 设置x轴标签\n",
    "        axs[idx].set_xlabel(\"step\")\n",
    "\n",
    "    plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "c0a50acb184a4292",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:17.447698Z",
     "start_time": "2025-01-24T11:57:02.194759Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:25:25.234683Z",
     "iopub.status.busy": "2025-01-24T12:25:25.234509Z",
     "iopub.status.idle": "2025-01-24T12:27:27.358563Z",
     "shell.execute_reply": "2025-01-24T12:27:27.358036Z",
     "shell.execute_reply.started": "2025-01-24T12:25:25.234665Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 15%|█▌        | 2940/19600 [01:57<11:06, 25.01it/s, epoch=14]  "
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 15 / global_step 2940\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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v/nz54tIx1Klv/71ryU8PFz0er2kp6dLSUmJy3NUV1fLnDlzxN/fX0wmkyxcuFDsdrvLmIKCAvne974ner1ehg4dKi+99JJiuRoaGmTatGkSGhoqfn5+EhsbK4sWLbrhDY475rpZJgCyZcsW55i+ev3t27dPxo0bJzqdThISEly+hxLZKioqZMqUKRIcHCx6vV4SExNl5cqVLn+vwR2z/exnP5PY2FjR6XQSGhoq6enpzkIj4rn7yxuwNilTm9Ral26VjbXJ/Y51aq1LIp5VmzQiIr07h0REREREROTZVHuPEBERERERUVfYCBERERERkddhI0RERERERF6HjRAREREREXkdNkJEREREROR12AgREREREZHXYSNEREREREReh40QERERERF5HTZCRH1kwYIFeOCBB5SeBhEREQDWJaJbYSNEREREREReh40QUS998MEHSE5OhsFgQEhICDIyMrBy5Uq8+eab2LVrFzQaDTQaDaxWKwDg3LlzeOihhxAYGIjg4GDMnDkTZ86ccT5f52/snn/+eYSGhsJkMmHx4sVoaWlRJiAREXkU1iWi2+Or9ASIPMnFixcxZ84cvPzyy3jwwQdht9tx8OBBzJs3DxUVFbDZbNiyZQsAIDg4GK2trZg+fTosFgsOHjwIX19frFu3DpmZmSgsLIROpwMAZGdnY9CgQbBarThz5gwWLlyIkJAQ/Pa3v1UyLhERuTnWJaLbx0aIqBcuXryItrY2zJo1C7GxsQCA5ORkAIDBYEBzczMiIiKc499++204HA68/vrr0Gg0AIAtW7YgMDAQVqsV06ZNAwDodDq88cYbMBqNGDVqFF544QWsXLkSv/nNb6DV8sQtERHdHOsS0e3jK5moF8aOHYv09HQkJyfjJz/5CTZv3oxr1651Ob6goAClpaUICAiAv78//P39ERwcjKamJpSVlbk8r9FodH5usVhQV1eHc+fO9WseIiLybKxLRLePZ4SIesHHxwdZWVn49NNP8fHHH2PDhg149tlnkZube9PxdXV1SElJwTvvvHPDttDQ0P6eLhERqRzrEtHtYyNE1EsajQZpaWlIS0vDmjVrEBsbix07dkCn06G9vd1l7IQJE/Dee+8hLCwMJpOpy+csKChAY2MjDAYDAODIkSPw9/dHdHR0v2YhIiLPx7pEdHt4aRxRL+Tm5uLFF19EXl4eKioqsH37dly+fBnf+c53EBcXh8LCQpSUlODKlStobW3F3LlzYTabMXPmTBw8eBDl5eWwWq144okncP78eefztrS04LHHHsPJkyexe/durF27FsuXL+d12ERE1C3WJaLbxzNCRL1gMplw4MAB/OEPf4DNZkNsbCxeeeUVzJgxAxMnToTVasXEiRNRV1eHffv2YerUqThw4ABWrVqFWbNmwW63Y+jQoUhPT3f5TVx6ejpGjBiBKVOmoLm5GXPmzMFzzz2nXFAiIvIIrEtEt08jIqL0JIi82YIFC1BTU4OdO3cqPRUiIiLWJfIaPL9JREREREReh40QERERERF5HV4aR0REREREXodnhIiIiIiIyOuwESIiIiIiIq/DRoiIiIiIiLwOGyEiIiIiIvI6bISIiIiIiMjrsBEiIiIiIiKvw0aIiIiIiIi8DhshIiIiIiLyOmyEiIiIiIjI6/x/tqjcUyxvXlcAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test loss: 0.3708, Test acc: 0.8607\n"
     ]
    }
   ],
   "source": [
    "epoch = 100\n",
    "\n",
    "# 单层单边\n",
    "model = LSTM()\n",
    "model.to(device)\n",
    "\n",
    "# 1. 定义损失函数 采用二进制交叉熵损失, 先sigmoid再计算交叉熵\n",
    "loss_fct = F.binary_cross_entropy_with_logits\n",
    "# 等价于 loss_fct =nn.BCEWithLogitsLoss()\n",
    "\n",
    "# 2. 定义优化器\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=0.001)\n",
    "\n",
    "# 3.save model checkpoint\n",
    "if not os.path.exists(\"checkpoints\"):\n",
    "    os.makedirs(\"checkpoints\")\n",
    "save_ckpt_callback = SaveCheckpointsCallback(save_dir=\"checkpoints\", save_step=len(train_loader), save_best_only=True)\n",
    "\n",
    "# 4. early stopping\n",
    "early_stop_callback = EarlyStopCallback(patience=5, min_delta=0.01)\n",
    "\n",
    "# 训练过程\n",
    "record_dict = training(\n",
    "    model,\n",
    "    train_loader,\n",
    "    test_loader,\n",
    "    epoch,\n",
    "    loss_fct,\n",
    "    optimizer,\n",
    "    save_ckpt_callback=save_ckpt_callback,\n",
    "    early_stop_callback=early_stop_callback,\n",
    "    eval_step=len(train_loader)\n",
    ")\n",
    "\n",
    "plot_record_curves(record_dict)  # 画图\n",
    "\n",
    "# 评估\n",
    "model.load_state_dict(\n",
    "    torch.load(\"checkpoints/06_embedding_LSTM_subword.ckpt\", weights_only=True, map_location=device))  # 加载最好的模型\n",
    "\n",
    "model.eval()  # 评估模式\n",
    "loss, acc = evaluate(model, test_loader, loss_fct)\n",
    "print(f\"Test loss: {loss:.4f}, Test acc: {acc:.4f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "2cdb877c97c24898",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:17.449700Z",
     "start_time": "2025-01-24T11:57:17.448700Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:27:27.359700Z",
     "iopub.status.busy": "2025-01-24T12:27:27.359181Z",
     "iopub.status.idle": "2025-01-24T12:29:43.708579Z",
     "shell.execute_reply": "2025-01-24T12:29:43.708028Z",
     "shell.execute_reply.started": "2025-01-24T12:27:27.359675Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 16%|█▌        | 3136/19600 [02:12<11:35, 23.66it/s, epoch=15]  "
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 16 / global_step 3136\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test loss: 0.3534, Test acc: 0.8569\n"
     ]
    }
   ],
   "source": [
    "epoch = 100\n",
    "\n",
    "# 单层双边\n",
    "model = LSTM(bidirectional=True)\n",
    "model.to(device)\n",
    "\n",
    "# 1. 定义损失函数 采用二进制交叉熵损失, 先sigmoid再计算交叉熵\n",
    "loss_fct = F.binary_cross_entropy_with_logits\n",
    "# 等价于 loss_fct =nn.BCEWithLogitsLoss()\n",
    "\n",
    "# 2. 定义优化器\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=0.001)\n",
    "\n",
    "# 3.save model checkpoint\n",
    "if not os.path.exists(\"checkpoints\"):\n",
    "    os.makedirs(\"checkpoints\")\n",
    "save_ckpt_callback = SaveCheckpointsCallback(save_dir=\"checkpoints\", save_step=len(train_loader), save_best_only=True)\n",
    "\n",
    "# 4. early stopping\n",
    "early_stop_callback = EarlyStopCallback(patience=5, min_delta=0.01)\n",
    "\n",
    "# 训练过程\n",
    "record_dict = training(\n",
    "    model,\n",
    "    train_loader,\n",
    "    test_loader,\n",
    "    epoch,\n",
    "    loss_fct,\n",
    "    optimizer,\n",
    "    save_ckpt_callback=save_ckpt_callback,\n",
    "    early_stop_callback=early_stop_callback,\n",
    "    eval_step=len(train_loader)\n",
    ")\n",
    "\n",
    "plot_record_curves(record_dict)  # 画图\n",
    "\n",
    "# 评估\n",
    "model.load_state_dict(\n",
    "    torch.load(\"checkpoints/06_embedding_LSTM_subword.ckpt\", weights_only=True, map_location=device))  # 加载最好的模型\n",
    "\n",
    "model.eval()  # 评估模式\n",
    "loss, acc = evaluate(model, test_loader, loss_fct)\n",
    "print(f\"Test loss: {loss:.4f}, Test acc: {acc:.4f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "bd3797857a0402a1",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:57:17.451700Z",
     "start_time": "2025-01-24T11:57:17.450700Z"
    },
    "execution": {
     "iopub.execute_input": "2025-01-24T12:29:43.709493Z",
     "iopub.status.busy": "2025-01-24T12:29:43.709228Z",
     "iopub.status.idle": "2025-01-24T12:32:31.057516Z",
     "shell.execute_reply": "2025-01-24T12:32:31.056987Z",
     "shell.execute_reply.started": "2025-01-24T12:29:43.709473Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 20%|██        | 3920/19600 [02:43<10:54, 23.97it/s, epoch=19]  "
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 20 / global_step 3920\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test loss: 0.3850, Test acc: 0.8639\n"
     ]
    }
   ],
   "source": [
    "epoch = 100\n",
    "\n",
    "# 双层单边\n",
    "model = LSTM(num_layers=2)\n",
    "model.to(device)\n",
    "\n",
    "# 1. 定义损失函数 采用二进制交叉熵损失, 先sigmoid再计算交叉熵\n",
    "loss_fct = F.binary_cross_entropy_with_logits\n",
    "# 等价于 loss_fct =nn.BCEWithLogitsLoss()\n",
    "\n",
    "# 2. 定义优化器\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=0.001)\n",
    "\n",
    "# 3.save model checkpoint\n",
    "if not os.path.exists(\"checkpoints\"):\n",
    "    os.makedirs(\"checkpoints\")\n",
    "save_ckpt_callback = SaveCheckpointsCallback(save_dir=\"checkpoints\", save_step=len(train_loader), save_best_only=True)\n",
    "\n",
    "# 4. early stopping\n",
    "early_stop_callback = EarlyStopCallback(patience=5, min_delta=0.01)\n",
    "\n",
    "# 训练过程\n",
    "record_dict = training(\n",
    "    model,\n",
    "    train_loader,\n",
    "    test_loader,\n",
    "    epoch,\n",
    "    loss_fct,\n",
    "    optimizer,\n",
    "    save_ckpt_callback=save_ckpt_callback,\n",
    "    early_stop_callback=early_stop_callback,\n",
    "    eval_step=len(train_loader)\n",
    ")\n",
    "\n",
    "plot_record_curves(record_dict)  # 画图\n",
    "\n",
    "# 评估\n",
    "model.load_state_dict(\n",
    "    torch.load(\"checkpoints/06_embedding_LSTM_subword.ckpt\", weights_only=True, map_location=device))  # 加载最好的模型\n",
    "\n",
    "model.eval()  # 评估模式\n",
    "loss, acc = evaluate(model, test_loader, loss_fct)\n",
    "print(f\"Test loss: {loss:.4f}, Test acc: {acc:.4f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "91e81be18649b81f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-01-24T12:32:31.058371Z",
     "iopub.status.busy": "2025-01-24T12:32:31.058124Z",
     "iopub.status.idle": "2025-01-24T12:35:04.707668Z",
     "shell.execute_reply": "2025-01-24T12:35:04.707032Z",
     "shell.execute_reply.started": "2025-01-24T12:32:31.058351Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 16%|█▌        | 3136/19600 [02:29<13:05, 20.97it/s, epoch=15]  "
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 16 / global_step 3136\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test loss: 0.3718, Test acc: 0.8604\n"
     ]
    }
   ],
   "source": [
    "epoch = 100\n",
    "\n",
    "# 双层双边\n",
    "model = LSTM(num_layers=2, bidirectional=True)\n",
    "model.to(device)\n",
    "\n",
    "# 1. 定义损失函数 采用二进制交叉熵损失, 先sigmoid再计算交叉熵\n",
    "loss_fct = F.binary_cross_entropy_with_logits\n",
    "# 等价于 loss_fct =nn.BCEWithLogitsLoss()\n",
    "\n",
    "# 2. 定义优化器\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=0.001)\n",
    "\n",
    "# 3.save model checkpoint\n",
    "if not os.path.exists(\"checkpoints\"):\n",
    "    os.makedirs(\"checkpoints\")\n",
    "save_ckpt_callback = SaveCheckpointsCallback(save_dir=\"checkpoints\", save_step=len(train_loader), save_best_only=True)\n",
    "\n",
    "# 4. early stopping\n",
    "early_stop_callback = EarlyStopCallback(patience=5, min_delta=0.01)\n",
    "\n",
    "# 训练过程\n",
    "record_dict = training(\n",
    "    model,\n",
    "    train_loader,\n",
    "    test_loader,\n",
    "    epoch,\n",
    "    loss_fct,\n",
    "    optimizer,\n",
    "    save_ckpt_callback=save_ckpt_callback,\n",
    "    early_stop_callback=early_stop_callback,\n",
    "    eval_step=len(train_loader)\n",
    ")\n",
    "\n",
    "plot_record_curves(record_dict)  # 画图\n",
    "\n",
    "# 评估\n",
    "model.load_state_dict(\n",
    "    torch.load(\"checkpoints/06_embedding_LSTM_subword.ckpt\", weights_only=True, map_location=device))  # 加载最好的模型\n",
    "\n",
    "model.eval()  # 评估模式\n",
    "loss, acc = evaluate(model, test_loader, loss_fct)\n",
    "print(f\"Test loss: {loss:.4f}, Test acc: {acc:.4f}\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
